package com.ruoyi.system.web;

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.system.utils.Sample;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * @author liupeng
 * -
 *  - `sendSms(String phoneNumber, String templateParam)`：
 *         - 创建阿里云短信服务的客户端。
 *         - 设置短信请求参数（手机号、签名、模板编号、模板参数）。
 *         - 调用阿里云短信 API 发送短信，并根据响应判断是否发送成功。
 */
@Service
@Slf4j
public class SmsUtils {
//    @Autowired
//    private RedisTemplate redisTemplate;
//        Client client;
//
//        public SmsUtils() throws Exception {
//            client = Sample.createClient();
//        }

//    @Value("${aliyun.sms.accessKeyId}")
//    private String accessKeyId;
//
//    @Value("${aliyun.sms.accessKeySecret}")
//    private String accessKeySecret;
//
//    @Value("${aliyun.sms.signName}")
//    private String signName;
//
//    @Value("${aliyun.sms.templateCode}")
//    private String templateCode;
//    private  String accessKeyId="LTAI5tGB5HwcrsAjKAFSrSq4";
//
//    private  String accessKeySecret="uLFE6fCpEmFibOkW8U9cqA1iDWTgY3";
//
//    private  String signName="智题分教育咨询";
//
//    private String templateCode="SMS_318285409";


        public String sendSms(String phoneNumber) throws Exception {
            Client client = Sample.createClient();
            // 构造API请求对象，请替换请求参数值
            UUID uuid = UUID.randomUUID();
            int hash = uuid.hashCode(); // 获取 UUID 的哈希值
            int num = Math.abs(hash % 10000); // 取 0~9999
            //随机生成四位验证码
            String codeKey = String.format("%04d", num); // 格式化为 4 位
            SendSmsRequest sendSmsRequest = new SendSmsRequest()

                    .setPhoneNumbers(phoneNumber)
                    .setSignName("智题分教育咨询")
                    .setTemplateCode("SMS_318285409")
                    .setTemplateParam("{\"code\":\""+codeKey+"\"}"); // TemplateParam为序列化后的JSON字符串。

            // 获取响应对象
            SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
            System.out.println("返回参数"+sendSmsResponse);
            return codeKey;
        }
    }